在有限的時間中,要學會一個前端框架不容易,也沒有一個框架是萬能的,但總要有個開始,筆者在進幾年一直在 extjs 的世界打滾,已有三四年的經驗,最近負責的專案除了使用 extjs,後端使用 grails,發現好處多多,就開發過程中的經驗與大家分享,從實際的例子還有兩個框架遇到得整合問題一一介紹
在使用 extjs 時,我們有幾個地方可以宣告事件的處理:
一般剛開始使用 extjs 會搞不清楚什麼時候該使用 mvc 中的 controller 來定義,又或者直接宣告在 component 上,特別是 extjs 4 一大特性 mvc,會讓使用者覺得宣告在 controller 是第一選擇,這樣架構上比較符合官方建議,其實不然,既然 extjs 也支援在 component 上宣告事件,自然有其意義。
既然兩個方式都可以宣告事件,我們該如何區別事件的歸屬呢?筆者認為可以從事件發生關係到的元件或者元件特性(特定功能或是共用元件)來做區別,在明確的說,假設事件所操作的對象所涵蓋的範圍只有該元件以及元件 item 屬性底下所掛載的其他元件,那就應該定義在元件上,若是事件處理涵蓋多個元件的組合互動,那就應該要使用 controller 來定義。
另一個角度,如果該功能屬於共用元件,那事件應該定義在元件底下,屬於特定的功能事件,那應該使用 controller 來處理。
如此一來,如果是定義在元件上的事件,只要某功能有引入該元件,就不需要重覆定義,該元件就有基本的事件互動,一旦需要調整,也不需要一一去改有用到的元件,只要修改宣告事件的元件即可,這樣的情形就像通用元件的狀況,相反地,定義在 controller 的事件就是個別功能的特性了。
舉例來說,如筆者上一篇 精簡程式碼案例分享 中的範例是一個標準的功能工具列,事件的定義就是宣告在元件定義上,之後只要有引入使用該標準工具列,就不需要在定義相關的事件。
最後根據上述的內容,整理出建議的事件定義對象
Ext JS 教學內容由思創軟體提供,共同作者 @lyhcode 與 @smlsun 目前在校園及企業從事 JavaScript(含 Node.js, Ext JS)與 Java(含 Groovy, Grails, Gradle) 教育訓練及顧問工作。